package joshie.harvest.cooking.gui; import joshie.harvest.api.cooking.Utensil; import joshie.harvest.core.helpers.TextHelper; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; import org.apache.commons.lang3.StringEscapeUtils; import java.util.ArrayList; import java.util.List; import static joshie.harvest.cooking.gui.GuiCookbook.LEFT_GUI; /** Display the utensils **/ public class PageUtensilList extends Page { private List<PageRecipeList> pages; @Override public PageUtensilList initGui(GuiCookbook gui) { super.initGui(gui); pages = new ArrayList<>(); for (Utensil tool: Utensil.REGISTRY.values()) { PageRecipeList page = PageRecipeList.get(tool); if (page.initGui(gui).hasRecipes()) { pages.add(page); } } return this; } @Override public Page getOwner() { return this; } @Override public void draw(int mouseX, int mouseY) { boolean hoverX = mouseX >= 166 && mouseX <= 288; //Left gui.drawString(45, 13, TextFormatting.BOLD + "" + TextFormatting.UNDERLINE + TextHelper.translate("cookbook")); gui.drawString(25, 25, StringEscapeUtils.unescapeJava(TextHelper.translate("meal.intro"))); //Right gui.drawString(205, 13, TextFormatting.BOLD + "" + TextFormatting.UNDERLINE + TextHelper.translate("utensils")); for (int i = 0; i < pages.size(); i++) { ItemStack stack = pages.get(i).getItem(); boolean hoverY = mouseY >= 21 + 31 * i && mouseY <= 21 + 31 * i + 30; if (hoverX && hoverY) { GlStateManager.color(1F, 1F, 1F); gui.mc.getTextureManager().bindTexture(LEFT_GUI); gui.drawTexture(163, 23 + i * 31, 131, 222, 125, 34); gui.drawString(202, 37 + i * 31, TextFormatting.ITALIC + stack.getDisplayName()); } else gui.drawString(202, 37 + i * 31, stack.getDisplayName()); gui.drawStack(167, 26 + i * 31, stack, 1.9F); } } @Override public boolean mouseClicked(int mouseX, int mouseY) { boolean hoverX = mouseX >= 166 && mouseX <= 288; for (int i = 0; i < pages.size(); i++) { boolean hoverY = mouseY >= 21 + 31 * i && mouseY <= 21 + 31 * i + 30; if (hoverX && hoverY) { return gui.setPage(pages.get(i)); } } return false; } }